#include <iostream>
using namespace std;
class Point
{
public:
  Point();
  Point(int vx, int vy); 
  // 前置自增重载为成员函数
  Point operator++();
 // 前置自减重载为友元函数
  friend Point &operator--(Point &p);
  void Display();

private:
  int x, y;
};
Point::Point()
{
  x = 0;
  y = 0;
}
Point::Point(int vx, int vy)
{
  x = vx;
  y = vy;
}
void Point::Display()
{
  cout << "(" << x << ", " << y << ")" << endl;
}
Point Point::operator++() // 前置自增
{
  if (x < 640)
    x++; // 不超过屏幕的横界
  if (y < 480)
    y++; // 不超过屏幕的竖界
  return *this;
}
Point &operator--(Point &p)
// 前置自减重载为友元函数
{
  if (p.x > 0)
    p.x--;
  if (p.y > 0)
    p.y--;
  return p;
}
int main()
{
  Point p1(10, 10), p2(150, 150);
  cout << "p1=";
  p1.Display();
  ++p1; // 测试前置自增
  cout << "++p1=";
  p1.Display();
  cout << "p2=";
  p2.Display();
  --p2; // 测试前置自减
  cout << "--p2=";
  p2.Display();
  return 0;
}
